package bite;

import java.math.BigInteger;

/**
 * Creared with IntelliJ IDEA.
 * Description:【另类加法】
 * 给定两个int A和B。编写一个函数返回A+B的值，但不得使用+或其他算数运算符。
 * User:yxd
 * Date:2022-04-02
 * Time:15:03
 */
public class Day9_1 {
    public static void main(String[] args) {

        System.out.println(addAB(15, 10));
    }
    public static int addAB(int A, int B) {
        //a和b异或得到的结果是两个数相加不考虑进位的结果
        //a和b相与再左移一位是两个数相加只考虑进位的结果
        if(B == 0)return A;
        int sum = 0;//
        int carray = 0;
        while(B != 0){
            sum = A ^ B;
            carray = (A & B) << 1;
            A = sum;
            B = carray;
        }
        return A;
    }
    public static int addAB1(int A, int B) {//认识一下BigInteger
        BigInteger x1 = BigInteger.valueOf(A);
        BigInteger x2 = BigInteger.valueOf(B);
        BigInteger z = x1.add(x2);//加法
        BigInteger w = x1.subtract(x2);//减法
        // System.out.println(w);
        BigInteger m = x1.multiply(x2);//乘法
        // System.out.println(m);
        BigInteger d = x1.divide(x2);//除法 和正常的除法一样
        //System.out.println(d);
        System.out.println(x1.gcd(x2));//返回最大公约数
        //System.out.println(c);
        return z.intValue();
    }
}
